πŸ•ΈοΈ Ada Research Browser

README.md
← Back

CMMC Level 2 Gap Assessment Toolkit

A comprehensive Python-based tool for conducting pre-assessments against all 110 NIST SP 800-171 Rev 2 security requirements, aligned with CMMC (Cybersecurity Maturity Model Certification) Level 2 C3PAO assessment methodology.

Overview

This toolkit enables Defense Industrial Base (DIB) contractors to:

CMMC Background

The Cybersecurity Maturity Model Certification (CMMC) is the Department of Defense's framework for assessing and enhancing the cybersecurity posture of DIB contractors. CMMC Level 2 requires implementation of all 110 security requirements from NIST SP 800-171 Rev 2, organized across 14 security domains:

Domain Controls Description
AC 22 Access Control
AT 3 Awareness and Training
AU 9 Audit and Accountability
CM 9 Configuration Management
IA 11 Identification and Authentication
IR 3 Incident Response
MA 6 Maintenance
MP 9 Media Protection
PS 2 Personnel Security
PE 6 Physical Protection
RA 3 Risk Assessment
CA 4 Security Assessment
SC 16 System and Communications Protection
SI 7 System and Information Integrity

Total: 110 Security Requirements

Features

Assessment Engine

Interactive CLI

Report Generation

Compliance Metrics

Installation

# Clone or download the toolkit
git clone https://github.com/atkens4real2000-sudo/CMMC-Gap-Assessment-Toolkit.git
cd CMMC-Gap-Assessment-Toolkit

# No external dependencies required - uses Python standard library
python3 cmmc_assessor.py

Requirements: - Python 3.8 or higher - No external packages required (uses standard library only)

Usage

Interactive Mode

python3 cmmc_assessor.py

This launches the interactive assessment interface where you can: 1. Create a new assessment for your organization 2. Assess controls domain by domain 3. View compliance status and gaps 4. Generate reports

Command Line Options

# Start new assessment
python3 cmmc_assessor.py --new "Your Organization Name"

# Load existing assessment
python3 cmmc_assessor.py --load assessment.json

# Generate reports from saved assessment
python3 cmmc_assessor.py --report assessment.json --output ./reports

# Display summary only
python3 cmmc_assessor.py --load assessment.json --summary

Programmatic Use

from assessment_engine import CMMCAssessment, AssessmentStatus, FindingSeverity
from report_generators import generate_all_reports

# Create assessment
assessment = CMMCAssessment("Acme Defense Corp")

# Assess a control
assessment.assess_control(
    "AC.L2-3.1.1",
    AssessmentStatus.MET,
    implementation_description="RBAC implemented via Active Directory",
    evidence_provided=["AD Group Policy documentation", "Access control matrix"],
    assessor_notes="Quarterly access reviews in place"
)

# Assess another control (NOT MET)
assessment.assess_control(
    "AC.L2-3.1.3",
    AssessmentStatus.NOT_MET,
    gaps_identified=["CUI data flows not documented", "No DLP solution deployed"]
)

# Add POA&M item
assessment.add_poam_item(
    control_id="AC.L2-3.1.3",
    weakness_description="CUI flow controls not implemented",
    severity=FindingSeverity.HIGH,
    remediation_plan="1. Map CUI data flows\n2. Deploy DLP solution\n3. Document authorized transfers",
    scheduled_completion="2024-06-30"
)

# Generate summary
summary = assessment.get_assessment_summary()
print(f"Compliance Score: {summary['compliance_score']}%")

# Generate all reports
reports = generate_all_reports(assessment, "./output")

Output Examples

Assessment Dashboard

╔═══════════════════════════════════════════════════════════════╗
β•‘                    ASSESSMENT DASHBOARD                        β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

  Organization: Acme Defense Corp
  Assessment:   CMMC_Assessment_20240125
  Date:         2024-01-25

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ COMPLIANCE METRICS                                          β”‚
  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
  β”‚  Compliance Score:   72.5%                                  β”‚
  β”‚  SPRS Score:           85   (Max: 110)                      β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ CONTROL STATUS                                              β”‚
  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
  β”‚  ● MET:            80                                       β”‚
  β”‚  ● NOT MET:        25                                       β”‚
  β”‚  ● NOT ASSESSED:    5                                       β”‚
  β”‚  β—‹ N/A:             0                                       β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Domain Status

═══ DOMAIN COMPLIANCE STATUS ═══

  AC   Access Control
       β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘  73% (16/22)

  IA   Identification and Authentication
       β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘  82% (9/11)

  SC   System and Communications Protection
       β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘  56% (9/16)

Project Structure

CMMC_Gap_Assessment_Toolkit/
β”œβ”€β”€ cmmc_assessor.py        # Main CLI application
β”œβ”€β”€ cmmc_controls.py        # Complete 110 control database
β”œβ”€β”€ assessment_engine.py    # Assessment logic and scoring
β”œβ”€β”€ report_generators.py    # SSP, POA&M, and HTML report generation
β”œβ”€β”€ requirements.txt        # Python dependencies
└── README.md               # This documentation

Key References

This toolkit is built upon official CMMC and NIST documentation:

Official resources: https://dodcio.defense.gov/cmmc/Resources-Documentation/

CMMC Assessment Process

This toolkit supports the pre-assessment phase of the CMMC certification process:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Self-Assessment β”‚ --> β”‚   Gap Analysis   β”‚ --> β”‚   Remediation   β”‚
β”‚   (This Tool)    β”‚     β”‚   (This Tool)    β”‚     β”‚                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                          β”‚
                                                          v
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   C3PAO Audit   β”‚ <-- β”‚  Pre-Assessment  β”‚ <-- β”‚   SSP/POA&M     β”‚
β”‚  (Third Party)   β”‚     β”‚   (Optional RPO) β”‚     β”‚   (This Tool)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Scoring Methodology

MET vs NOT_MET

A control is scored as MET only when ALL assessment objectives for that control are satisfied. This aligns with C3PAO assessment methodology where partial implementation results in NOT_MET.

SPRS Score Calculation

The Supplier Performance Risk System (SPRS) score starts at 110 and deducts points for each NOT_MET control:

Minimum SPRS score: -203

Disclaimer

This toolkit is designed for pre-assessment and internal planning purposes. Official CMMC certification requires assessment by an authorized Certified Third-Party Assessor Organization (C3PAO). Results from this tool should not be represented as official CMMC assessment results.

Author

Akintade Akinokun - Senior Cybersecurity Professional - CEH, ECIH, CHFI, CND, CC, CCZT, CCSK, TAISE | CISA (In Progress) - Specializing in compliance frameworks and security program development

License

MIT License - See LICENSE file for details.


Built for DIB contractors preparing for CMMC Level 2 certification.